package com.ruicar.afs.cloud.contract.gateway.processor.value;

import com.ruicar.afs.cloud.contract.gateway.enums.ProcessorName;

/**
 * The type ValueProcessor
 * <p>Description: </p>
 *
 * @param <INPUT>  parameter
 * @param <OUTPUT> parameter
 * @author Fzero
 * @version 1.0
 * @date Created on 2020.07.20 21:17:41
 * @since 1.0
 */
public interface ValueProcessor<INPUT,OUTPUT> {
    /**
     * Process name processor name
     *
     * @return the processor name
     */
    ProcessorName processName();

    /**
     * Process output
     *
     * @param sourceValue  source value
     * @param defaultValue default value
     * @return the output
     */
    OUTPUT process(INPUT sourceValue,INPUT defaultValue);
}
